{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.9" }, "colab": { "name": "301_2nd Order Runge Kutta Population Equations.ipynb", "provenance": [], "include_colab_link": true } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": { "id": "nlr1Ru5KqTRX" }, "source": [ "# Application of 2nd order Runge Kutta to Populations Equations\n", "\n", "This notebook implements the 2nd Order Runge Kutta method for three different population intial value problems.\n", "\n", "# 2nd Order Runge Kutta\n", "The general 2nd Order Runge Kutta method for to the first order differential equation\n", "\\begin{equation} y^{'} = f(t,y) \\end{equation}\n", "numerical approximates $y$ the at time point $t_i$ as $w_i$\n", "with the formula:\n", "\\begin{equation} w_{i+1}=w_i+\\frac{h}{2}\\big[k_1+k_2],\\end{equation}\n", "for $i=0,...,N-1$, where \n", "\\begin{equation}k_1=f(t_i,w_i),\\end{equation}\n", "and\n", "\\begin{equation}k_2=f(t_i+h,w_i+hk_1),\\end{equation}\n", "and $h$ is the stepsize.\n", "\n", "To illustrate the method we will apply it to three intial value problems:\n", "## 1. Linear \n", "Consider the linear population Differential Equation\n", "\\begin{equation} y^{'}=0.1y, \\ \\ (2000 \\leq t \\leq 2020), \\end{equation}\n", "with the initial condition,\n", "\\begin{equation}y(2000)=6.\\end{equation}\n", "\n", "## 2. Non-Linear Population Equation \n", "Consider the non-linear population Differential Equation\n", "\\begin{equation} y^{'}=0.2y-0.01y^2, \\ \\ (2000 \\leq t \\leq 2020), \\end{equation}\n", "with the initial condition,\n", "\\begin{equation}y(2000)=6.\\end{equation}\n", "\n", "## 3. Non-Linear Population Equation with an oscillation \n", "Consider the non-linear population Differential Equation with an oscillation \n", "\\begin{equation} y^{'}=0.2y-0.01y^2+\\sin(2\\pi t), \\ \\ (2000 \\leq t \\leq 2020), \\end{equation}\n", "with the initial condition,\n", "\\begin{equation}y(2000)=6.\\end{equation}" ] }, { "cell_type": "markdown", "metadata": { "id": "5BKUkz0jqTRZ" }, "source": [ "#### Setting up Libraries" ] }, { "cell_type": "code", "metadata": { "id": "F6L7k675qTRa" }, "source": [ "## Library\n", "import numpy as np\n", "import math \n", "import pandas as pd\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt # side-stepping mpl backend\n", "import matplotlib.gridspec as gridspec # subplots\n", "import warnings\n", "\n", "warnings.filterwarnings(\"ignore\")\n", "\n" ], "execution_count": 1, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "pzykh1q-qTRf" }, "source": [ "## Discrete Interval\n", "The continuous time $a\\leq t \\leq b $ is discretised into $N$ points seperated by a constant stepsize\n", "\\begin{equation} h=\\frac{b-a}{N}.\\end{equation}\n", "Here, the interval is $2000\\leq t \\leq 2020,$ \n", "\\begin{equation} h=\\frac{2020-2000}{200}=0.1.\\end{equation}\n", "This gives the 201 discrete points:\n", "\\begin{equation} t_0=2000, \\ t_1=2000.1, \\ ... t_{200}=2020. \\end{equation}\n", "This is generalised to \n", "\\begin{equation} t_i=2000+i0.1, \\ \\ \\ i=0,1,...,200.\\end{equation}\n", "The plot below shows the discrete time steps:" ] }, { "cell_type": "code", "metadata": { "id": "OYX2NEUfqTRg", "colab": { "base_uri": "https://localhost:8080/", "height": 281 }, "outputId": "6b6b7023-72b9-4506-d9c0-80831731ce68" }, "source": [ "N=200\n", "t_end=2020.0\n", "t_start=2000.0\n", "h=((t_end-t_start)/N)\n", "t=np.arange(t_start,t_end+h/2,h)\n", "fig = plt.figure(figsize=(10,4))\n", "plt.plot(t,0*t,'o:',color='red')\n", "plt.title('Illustration of discrete time points for h=%s'%(h))\n", "plt.show()" ], "execution_count": 2, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "GRQBKvheqTRj" }, "source": [ "# 1. Linear Population Equation\n", "## Exact Solution \n", "The linear population equation\n", "\\begin{equation} y^{'}=0.1y, \\ \\ (2000 \\leq t \\leq 2020), \\end{equation}\n", "with the initial condition,\n", "\\begin{equation} y(2000)=6.\\end{equation}\n", "has a known exact (analytic) solution\n", "\\begin{equation} y=6e^{0.1(t-2000)}. \\end{equation}\n", "\n", "## Specific 2nd Order Runge Kutta \n", "To write the specific 2nd Order Runge Kutta method for the linear population equation we need \n", "\\begin{equation}f(t,y)=0.1y.\\end{equation}" ] }, { "cell_type": "code", "metadata": { "id": "g36MCt9kqTRj" }, "source": [ "def linfun(t,w):\n", " ftw=0.1*w\n", " return ftw" ], "execution_count": 3, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "2tri4OS9qTRm" }, "source": [ "this gives\n", "\\begin{equation}k_1=f(t_i,w_i)=0.lw_i,\\end{equation}\n", "\\begin{equation}k_2=f(t_i+h,w_i+hk_1)=0.1(w_i+hk_1),\\end{equation}\n", "and the difference equation\n", "\\begin{equation}w_{i+1}=w_{i}+\\frac{h}{2}(k_1+k_2),\\end{equation}\n", "for $i=0,...,199$, where $w_i$ is the numerical approximation of $y$ at time $t_i$, with step size $h$ and the initial condition\n", "\\begin{equation}w_0=6.\\end{equation}" ] }, { "cell_type": "code", "metadata": { "id": "THwmJrL2qTRm" }, "source": [ "w=np.zeros(N+1)\n", "w[0]=6.0\n", "## 2nd Order Runge Kutta\n", "for k in range (0,N):\n", " k1=linfun(t[k],w[k])\n", " k2=linfun(t[k]+h,w[k]+h*k1)\n", " w[k+1]=w[k]+h/2*(k1+k2)" ], "execution_count": 4, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "tLegBPPeqTRp" }, "source": [ "## Plotting Results" ] }, { "cell_type": "code", "metadata": { "id": "4LdkLbOmqTRp", "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "outputId": "89fbc076-cd5f-41ab-9b0c-a67b0be11c15" }, "source": [ "y=6*np.exp(0.1*(t-2000))\n", "fig = plt.figure(figsize=(8,4))\n", "plt.plot(t,w,'o:',color='purple',label='Runge Kutta')\n", "plt.plot(t,y,'s:',color='black',label='Exact')\n", "plt.legend(loc='best')\n", "plt.show()" ], "execution_count": 5, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "SVzOXpE0qTRs" }, "source": [ "## Table\n", "The table below shows the time, the Runge Kutta numerical approximation, $w$, the exact solution, $y$, and the exact error $|y(t_i)-w_i|$ for the linear population equation:" ] }, { "cell_type": "code", "metadata": { "id": "QaOg9JvvqTRs", "colab": { "base_uri": "https://localhost:8080/", "height": 357 }, "outputId": "f06a81c2-ac6b-4070-9f3a-d8d21f3c75c5" }, "source": [ "\n", "d = {'time t_i': t[0:10], 'Runge Kutta':w[0:10],'Exact (y)':y[0:10],'Exact Error':np.abs(np.round(y[0:10]-w[0:10],10))}\n", "df = pd.DataFrame(data=d)\n", "df" ], "execution_count": 6, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
time t_iRunge KuttaExact (y)Exact Error
02000.06.0000006.0000000.000000
12000.16.0603006.0603010.000001
22000.26.1212066.1212080.000002
32000.36.1827246.1827270.000003
42000.46.2448616.2448650.000004
52000.56.3076216.3076270.000005
62000.66.3710136.3710190.000006
72000.76.4350426.4350490.000007
82000.86.4997146.4997220.000009
92000.96.5650366.5650460.000010
\n", "
" ], "text/plain": [ " time t_i Runge Kutta Exact (y) Exact Error\n", "0 2000.0 6.000000 6.000000 0.000000\n", "1 2000.1 6.060300 6.060301 0.000001\n", "2 2000.2 6.121206 6.121208 0.000002\n", "3 2000.3 6.182724 6.182727 0.000003\n", "4 2000.4 6.244861 6.244865 0.000004\n", "5 2000.5 6.307621 6.307627 0.000005\n", "6 2000.6 6.371013 6.371019 0.000006\n", "7 2000.7 6.435042 6.435049 0.000007\n", "8 2000.8 6.499714 6.499722 0.000009\n", "9 2000.9 6.565036 6.565046 0.000010" ] }, "metadata": {}, "execution_count": 6 } ] }, { "cell_type": "markdown", "metadata": { "id": "fxlfUcFyqTRv" }, "source": [ "## 2. Non-Linear Population Equation \n", "\\begin{equation} y^{'}=0.2y-0.01y^2, \\ \\ (2000 \\leq t \\leq 2020), \\end{equation}\n", "with the initial condition,\n", "\\begin{equation}y(2000)=6.\\end{equation}\n", "## Specific 2nd Order Runge Kutta for the Non-Linear Population Equation\n", "To write the specific 2nd Order Runge Kutta method we need\n", "\\begin{equation}f(t,y)=0.2y-0.01y^2,\\end{equation}\n", "this gives\n", "\\begin{equation}k_1=f(t_i,w_i)=0.2w_i-0.01w_i^2,\\end{equation}\n", "\\begin{equation}k_2=f(t_i+h,w_i+hk_1)=0.2(w_i+hk_1)-0.01(w_i+hk_1)^2,\\end{equation}\n", "and the difference equation\n", "\\begin{equation}w_{i+1}=w_{i}+\\frac{h}{2}(k_1+k_2),\\end{equation}\n", "for $i=0,...,199$, where $w_i$ is the numerical approximation of $y$ at time $t_i$, with step size $h$ and the initial condition\n", "\\begin{equation}w_0=6.\\end{equation}" ] }, { "cell_type": "code", "metadata": { "id": "4Pbq4CxMqTRw" }, "source": [ "def nonlinfun(t,w):\n", " ftw=0.2*w-0.01*w*w\n", " return ftw" ], "execution_count": 7, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "iJjUCyoHqTRy" }, "source": [ "w=np.zeros(N+1)\n", "w[0]=6.0\n", "## 2nd Order Runge Kutta\n", "for k in range (0,N):\n", " k1=nonlinfun(t[k],w[k])\n", " k2=nonlinfun(t[k]+h,w[k]+h*k1)\n", " w[k+1]=w[k]+h/2*(k1+k2)" ], "execution_count": 8, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "nSVhMIVhqTR0" }, "source": [ "## Results\n", "The plot below shows the Runge Kutta numerical approximation, $w$ (circles) for the non-linear population equation:" ] }, { "cell_type": "code", "metadata": { "id": "VGO634VDqTR0", "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "outputId": "1308b3cd-6c58-4188-e8ad-9a8f133f1607" }, "source": [ "fig = plt.figure(figsize=(8,4))\n", "plt.plot(t,w,'o:',color='purple',label='Runge Kutta')\n", "plt.legend(loc='best')\n", "plt.show()" ], "execution_count": 9, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "XsDAJtseqTR2" }, "source": [ "## Table\n", "The table below shows the time and the Runge Kutta numerical approximation, $w$, for the non-linear population equation:" ] }, { "cell_type": "code", "metadata": { "id": "2nvEBzeWqTR2", "colab": { "base_uri": "https://localhost:8080/", "height": 357 }, "outputId": "70a11520-2686-4816-c33a-37c7a7f4d242" }, "source": [ "d = {'time t_i': t[0:10], \n", " 'Runge Kutta':w[0:10]}\n", "df = pd.DataFrame(data=d)\n", "df" ], "execution_count": 10, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
time t_iRunge Kutta
02000.06.000000
12000.16.084332
22000.26.169328
32000.36.254977
42000.46.341270
52000.56.428197
62000.66.515747
72000.76.603909
82000.86.692672
92000.96.782025
\n", "
" ], "text/plain": [ " time t_i Runge Kutta\n", "0 2000.0 6.000000\n", "1 2000.1 6.084332\n", "2 2000.2 6.169328\n", "3 2000.3 6.254977\n", "4 2000.4 6.341270\n", "5 2000.5 6.428197\n", "6 2000.6 6.515747\n", "7 2000.7 6.603909\n", "8 2000.8 6.692672\n", "9 2000.9 6.782025" ] }, "metadata": {}, "execution_count": 10 } ] }, { "cell_type": "markdown", "metadata": { "id": "alLm7_PfqTR4" }, "source": [ "## 3. Non-Linear Population Equation with an oscilation \n", "\\begin{equation} y^{'}=0.2y-0.01y^2+\\sin(2\\pi t), \\ \\ (2000 \\leq t \\leq 2020), \\end{equation}\n", "with the initial condition,\n", "\\begin{equation}y(2000)=6.\\end{equation}\n", "\n", "## Specific 2nd Order Runge Kutta for the Non-Linear Population Equation with an oscilation\n", "To write the specific 2nd Order Runge Kutta difference equation for the intial value problem we need \n", "\\begin{equation}f(t,y)=0.2y-0.01y^2+\\sin(2\\pi t),\\end{equation}\n", "which gives\n", "\\begin{equation}k_1=f(t_i,w_i)=0.2w_i-0.01w_i^2+\\sin(2\\pi t_i),\\end{equation}\n", "\\begin{equation}k_2=f(t_i+h,w_i+hk_1)=0.2(w_i+hk_1)-0.01(w_i+hk_1)^2+\\sin(2\\pi (t_i+h)),\\end{equation}\n", "and the difference equation\n", "\\begin{equation}w_{i+1}=w_{i}+\\frac{h}{2}(k_1+k_2),\\end{equation}\n", "for $i=0,...,199$, where $w_i$ is the numerical approximation of $y$ at time $t_i$, with step size $h$ and the initial condition\n", "\\begin{equation}w_0=6.\\end{equation}" ] }, { "cell_type": "code", "metadata": { "id": "KcPh153LqTR4" }, "source": [ "def nonlin_oscfun(t,w):\n", " ftw=0.2*w-0.01*w*w+np.sin(2*np.math.pi*t)\n", " return ftw" ], "execution_count": 11, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "XqdqPm6ZqTR6" }, "source": [ "w=np.zeros(N+1)\n", "w[0]=6.0\n", "## 2nd Order Runge Kutta\n", "for k in range (0,N):\n", " k1=nonlin_oscfun(t[k],w[k])\n", " k2=nonlin_oscfun(t[k]+h,w[k]+h*k1)\n", " w[k+1]=w[k]+h/2*(k1+k2)" ], "execution_count": 12, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "EqJ4WI_VqTR8" }, "source": [ "## Results\n", "The plot below shows the 2nd order Runge Kutta numerical approximation, $w$ (circles) for the non-linear population equation:" ] }, { "cell_type": "code", "metadata": { "id": "iHNXCSpHqTR8", "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "outputId": "cd12a47b-6d84-498b-e9e2-939f3dfa292f" }, "source": [ "fig = plt.figure(figsize=(8,4))\n", "plt.plot(t,w,'o:',color='purple',label='Taylor')\n", "plt.legend(loc='best')\n", "plt.show()" ], "execution_count": 13, "outputs": [ { "output_type": "display_data", "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeAAAAD4CAYAAAA0JjXXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAActklEQVR4nO3dfZRcZZ3g8e+PEEwHsIVOVFYMiSMyjEQUm8GXUePG8RgP6ohvIIwJ6uawM+vKnuX4suogejg7y+7ZkVn3OBMFgpiDjEwQUeNbdljO2R3FwAANMgjOJkyrSIwzDU4IdsKzf9StUCnqratuVd1b9f2c06er762693n6dvWvnuc+z/OLlBKSJGmwDht2ASRJGkcGYEmShsAALEnSEBiAJUkaAgOwJElDcPggT7Zs2bK0cuXKQZ5SkqShue22236ZUlreaN9AA/DKlSvZsWPHIE8pSdLQRMSuZvvsgpYkaQgMwJIkDYEBWJKkIRjoPeBG5ufnmZ2dZd++fcMuylAsWbKE448/nsWLFw+7KJKkARp6AJ6dneXoo49m5cqVRMSwizNQKSX27NnD7Owsq1atGnZxJEkDNPQAvG/fvrEMvgARwdTUFLt37x52USRpJM1smWH7x7Yzt2uOWBSkA4nJEyZZe+laVp+7eqhlG3oABsYy+FaNc90lqV9mtsyw7YPbeGzPYwe3pQOV7H9zu+bYet5Wtn1wG+suXze0QFyIACxJUh4aBd5mHtvzGDdtvAlgKEF47APwnj17WLt2LQAPPfQQixYtYvnyyqIlt956K0cccUTbY2zYsIEzzzyTt7/97X0tqySNul66jGe2zHDTxpuY3zvf8fnm986z9bytbD1v68C7pksXgA9enAfnmFzR+y9ramqKO+64A4BPfvKTHHXUUVx00UV5FbehAwcOsGjRor6eQ5LKpNcu45ktM9yw/oaDr+nGoLumSzUPuPrpZm7XHKTKL+umjTcxs2Um1/N8/vOf5/TTT+fUU0/lbW97G3v37uXRRx9l1apVzM9XPlk98sgjh/xctX37dl7ykpewevVq3vve9/L4448DlWU4P/zhD3Paaafxla98JdfySlJZzWyZ4bJll7H1vK1tu40f2/MYW8/bymXLLjv4f7/29b0E3/rz9CO21CtcAN68ZjN3bK60SA/MH2Dzms3c9aW7APjeR7/3lK6F+b3zfOvCbwGw95d72bxmM/fddB8Av37o112V4ayzzuKHP/whd955JyeffDJXXHEFRx99NGvWrOEb3/gGAF/+8pc566yzDpm/u2/fPjZs2MB1113HzMwM+/fv53Of+9zB/VNTU9x+++2cffbZXZVLkopkZssMn1n5GS6JS/jU4Z/ikriEz6z8TMeBq9qo6uR+ba1qIL4kLukocHdjfu882z+2Pffj1ipcAG7lkdlHGm7fu2dvrue5++67edWrXsXq1avZsmUL99xzDwDvf//7ueqqqwC46qqrOP/88w953X333ceqVat4wQteAMD69eu55ZZbDu5/17velWs5JWkYaludc7vmgKd2F9e2Upsd44b1Nyzofm23JqYmOOtLZ3FxupizvnQWsaiz2SdzD871tVyFuwe84eYNBx8vWrzokJ8nV0wevNi1JldMArB02dJDnn/Us4/qrgwbNvDVr36VU089lc2bN3PzzTcD8MpXvpKdO3dy8803c+DAAU455ZQFHffII4/sqjySVAQLHWHc6H7qQo7Rq1gUvPXqtx5yL7f6uJPBWtXY0i+FC8CtrL107VN+aYuXLmbtpWtzPc+jjz7Kcccdx/z8PFu2bOE5z3nOwX3vec97ePe7380nPvGJp7zupJNOYufOnTzwwAM8//nP55prruE1r3lNrmWTpGHoZoQxPBmIb3jPDaQnEgSQz63alhYvXcybNr2p4UCq6rbqaOtGZepHbKlXqgB8yC8tp1HQjXz605/mjDPOYPny5Zxxxhk8+uijB/ede+65fPzjH+ecc855yuuWLFnCVVddxTve8Q7279/P6aefzgUXXJBr2SSpW91O8cljhHF6InttB4eYmJo42GrupsVc+/pmVp+7+pD9ec+w6USkNICPIpnp6em0Y8eOQ7bde++9nHzyyQMrQ6+uv/56brzxRq655prcjlm234GkcukkiDULWt22fLvRqMu4thzd1mGYIuK2lNJ0o32lagEP2wc+8AG2bdvGN7/5zWEXRZLa6vWebR4t30616jKGJ1usRV7beaFsAReAvwNJeRtUy7XX7uL6Y4yawreAU0pjm5RgkB+AJI2HQbRcm40w7igQZ4OeytpyzcvQA/CSJUvYs2cPU1NTYxeEq/mAlyxZMuyiSCqgRt2t7bpdqy3ffgbfcewu7oehd0HPz88zOzvL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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "tzflYVlOqTR9" }, "source": [ "## Table\n", "The table below shows the time and the 2nd order Runge Kutta numerical approximation, $w$, for the non-linear population equation:" ] }, { "cell_type": "code", "metadata": { "id": "Mj0ZTItPqTR-", "colab": { "base_uri": "https://localhost:8080/", "height": 357 }, "outputId": "ff9762d1-564c-4b4d-c7a7-1f839556712d" }, "source": [ "d = {'time t_i': t[0:10], \n", " 'Runge Kutta':w[0:10]}\n", "df = pd.DataFrame(data=d)\n", "df" ], "execution_count": 14, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
time t_iRunge Kutta
02000.06.000000
12000.16.113722
22000.26.276109
32000.36.458005
42000.46.623032
52000.56.741504
62000.66.801784
72000.76.814712
82000.86.809444
92000.96.822305
\n", "
" ], "text/plain": [ " time t_i Runge Kutta\n", "0 2000.0 6.000000\n", "1 2000.1 6.113722\n", "2 2000.2 6.276109\n", "3 2000.3 6.458005\n", "4 2000.4 6.623032\n", "5 2000.5 6.741504\n", "6 2000.6 6.801784\n", "7 2000.7 6.814712\n", "8 2000.8 6.809444\n", "9 2000.9 6.822305" ] }, "metadata": {}, "execution_count": 14 } ] }, { "cell_type": "code", "metadata": { "id": "jc2SbXz6qTR_" }, "source": [ "" ], "execution_count": 14, "outputs": [] } ] }